package com.yiba.vpn.util;

import java.io.UnsupportedEncodingException;
import java.net.URLEncoder;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

public class StringUtils {
	private static final Logger logger = LoggerFactory
			.getLogger(StringUtils.class);

	public final static String ENCODING = "UTF-8";

	/**
	 * 填充字符补满len位字符串
	 *
	 * @param str
	 *            原始字符串
	 * @param len
	 *            最终长度
	 * @param c
	 *            用这个字节补充
	 * @return
	 */
	public static String fillChar(String str, int len, char c) {
		StringBuffer sb = new StringBuffer(str);
		int length = str.length();
		if (length > len) {
			return null;
		} else {
			while (sb.length() < len) {
				sb.append(c);
			}
		}
		return sb.toString();
	}

	public static boolean isNullOrEmpty(String str) {
		if (str == null || "".equals(str))
			return true;
		else
			return false;
	}

	public static String nullToEmpty(String str) {
		if (str == null)
			return "";
		return str;
	}
	
	public static boolean isEmpty(String str){
		if(str==null||str.trim().length()==0)
			return true;
		return false;
	}

	public static String getEscaped(String str) {
		try {
			return URLEncoder.encode(str, ENCODING);
		} catch (UnsupportedEncodingException e) {
			logger.warn("编码不支持!", e);
		}
		return "";
	}
	
	/**
	 * 获取一个随机字符串。
	 * 
	 * @param length
	 *            随机字符串的长度
	 * @param allowLetter
	 *            是否允许使用字母
	 * 
	 * @return 一个随机字符串
	 */
	public static String getRandomString(int length, boolean allowLetter) {
		if (length < 1) {
			return "";
		}
		StringBuffer sb = new StringBuffer(length);
		for (int i = 0; i < length; i++) {
			sb.append(allowLetter ? genRandomChar(i != 0)
					: genRandomDigit(i != 0));
		}

		return sb.toString();
	}

	/**
	 * 获取一个随机字符（允许数字0-9和小写字母）。
	 * 
	 * @return 一个随机字符
	 */
	public static char genRandomChar(boolean allowZero) {
		int randomNumber = 0;

		do {
			randomNumber = (int) (Math.random() * 36);
		} while ((randomNumber == 0) && !allowZero);

		if (randomNumber < 10) {
			return (char) (randomNumber + '0');
		}
		return (char) (randomNumber - 10 + 'a');
	}

	/**
	 * 获取一个随机字符（只允许数字0-9）。
	 * 
	 * @return 一个随机字符
	 */
	public static char genRandomDigit(boolean allowZero) {
		int randomNumber = 0;
		do {
			randomNumber = (int) (Math.random() * 10);
		} while ((randomNumber == 0) && !allowZero);

		return (char) (randomNumber + '0');
	}
}
